package com.tiny.tinyweb.core.utils;

import javax.naming.Name;

import org.springframework.ldap.core.DistinguishedName;
import org.springframework.util.StringUtils;

/**
 * 支持 LDAP 操作的工具类。
 * @author wxiaobin
 */
public class LdapUtils {
    /**
     * 根据指定的 DN 字符串，创建不含根 DN 的
     * {@link org.springframework.ldap.core.DistinguishedName} 对象。
     * @param fullDn 指定的 DN 字符串，可以不指定 （空值或空字符串），此时返回根 DN 对象
     * @param baseDn 根 DN 对象
     * @return 不含根 DN 的 DN 对象
     */
    public static Name buildDn(final String fullDn, DistinguishedName baseDn) {
        // 根 DN 对象未指定时，使用空路径
        if (baseDn == null || baseDn.isEmpty()) {
            baseDn = DistinguishedName.EMPTY_PATH;
        }
        // 获得不含根 DN 的 DN 对象，如果未指定 DN 字符串，则返回根 DN 对象
        if (StringUtils.hasLength(fullDn)) {
            DistinguishedName dn = new DistinguishedName(fullDn);
            dn.removeFirst(baseDn);
            return dn;
        } else {
            return baseDn;
        }
    }
}
